[IA64] Avoid double free of VHPT for HVM domain
authorawilliam@xenbuild2.aw <awilliam@xenbuild2.aw>
Tue, 20 Mar 2007 15:24:02 +0000 (09:24 -0600)
committerawilliam@xenbuild2.aw <awilliam@xenbuild2.aw>
Tue, 20 Mar 2007 15:24:02 +0000 (09:24 -0600)
If vTLB area is not able to allocate with shortage of domheap,
Xen does a panic for double free of VHPT.

At first:
  vmx_final_setup_guest()
    -> init_domain_tlb()
         -> free_domain_vhpt()

At second:
  free_domain()
    -> vcpu_destroy()
         -> vmx_relinquish_vcpu_resources()
              -> free_domain_tlb()
                   -> free_domain_vhpt()

This patch avoids double free of VHPT by clearing v->arch.vhpt.hash
in free_domain_vhpt().

Signed-off-by: Masaki Kanno <kanno.masaki@jp.fujitsu.com>
xen/arch/ia64/vmx/vmmu.c

index 6a4ac502c24ead7590bdd0952c1ada489eaa0b43..917f274bf9a127862dcf10d3f7c25ebc5fa02795 100644 (file)
@@ -161,6 +161,7 @@ static void free_domain_vhpt(struct vcpu *v)
     if (v->arch.vhpt.hash) {
         page = virt_to_page(v->arch.vhpt.hash);
         free_domheap_pages(page, VCPU_VHPT_ORDER);
+        v->arch.vhpt.hash = 0;
     }
 
     return;